#include <stdio.h>/*该文件包含pringtf()等函数*/
#include <stdlib.h>/*该文件包含exit()等函数*/
#include <malloc.h>/*该文件包含malloc()等函数*/

typedef int DataType;/*定义DataType为int*/


typedef struct Node
{
  DataType data;
  struct Node *next;
} LNode,*LinkList;

/*单链表初始化。初始化成功函数返回0，否则返回1。*/
int ListInitiate(LinkList &head)
{   if(head=new LNode;
	head->next=NULL:
	 ){
	return 0; 
 	}
	else return1;
};

/* 函数返回由head所表示的单链表的长度。*/
int ListLength(LinkList	 head){
	LNode p;
	int a=0;
	p=head->next;
	while(*p!=NULL){
		a++;
		p=p->next;
	}
	retuen a;
	
};

// 在由head所表示的单链表里插入一个元素 x 到位置 i。
// 插入成功函数返回0，否则返回1。
int ListInsert(LNode *head, int i, DataType x){
	p=head;j=0;
	while(p&&(j<i-1)){
		p=p->next;++j;
	} 
	if(!p=j>i-1) return 1;
	s=new LNode;
	s->data=x;
	s->next=p-next;
	p->next=s;
	return 0;
};


// 在由head所表示的单链表里删除位置 i 上的元素并将其值存入 x 变量里。调用成功后，列表长度减1。
int ListDelete(LNode *head, int i, DataType *x){
	p=head;j=0;
	while((p->next)&&(j<i-1))
	{
		p=p->next;++j;
	}
	if(!(p->next)||(j>i-1)) return ERROR;
	q=p-next;
	p->next=q->next;
	delete q;
	return ok;
};

// 在由head所表示的单链表里获取位置 i 上的元素并将其值存入 x 变量里。调用成功后，列表长度不变。
int ListGet(LNode *head, int i, DataType *x);

// 释放所有的由head所表示的单链表里的元素节点（含头结点）。当释放完全成功时，函数返回0，否则返回1。
int Destroy(LNode **head); 

